package com.fangs.lunbotu.banner;

import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.viewpager.widget.ViewPager;


import java.lang.reflect.Field;

public class ViewPagerBanner extends ViewPager {
    //是否可以进行滑动
    private boolean isSlide = true;//false:不可以滑动；true:可以滑动

    public ViewPagerBanner(@NonNull Context context) {
        super(context);

        init();
    }

    /**
     * //@Nullable ,可以传入空指针
     * //@Nonnull ,不可以传入空指针
     **/
    public ViewPagerBanner(@NonNull Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);

        init();
    }

    private void init() {//设置翻页动画的过度时间为2秒 SetCurrentItem()
        try {
            Field scrollerField = ViewPager.class.getDeclaredField("mScroller");
            scrollerField.setAccessible(true);
            scrollerField.set(this, new MyBannerScroller(getContext(), 1000));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void setSlide(boolean slide) {
        isSlide = slide;
    }

    /**
     * 1.dispatchTouchEvent一般情况不做处理
     * ,如果修改了默认的返回值,子孩子都无法收到事件
     */
    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        return super.dispatchTouchEvent(ev);   // return true;不行
    }

    /**
     * 是否拦截
     * 拦截:会走到自己的onTouchEvent方法里面来
     * 不拦截:事件传递给子孩子
     */
    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        return super.onInterceptTouchEvent(ev);
    }

    /**
     * 是否消费事件
     * 消费:事件就结束
     * 不消费:往父控件传
     */
    @Override
    public boolean onTouchEvent(MotionEvent ev) {
        super.onTouchEvent(ev);
        return isSlide;// 可行,消费,拦截事件
    }
}
